package MAIN;
//笔试强训第13天
//选择题
/*关系型数据库的逻辑性强，而物理性弱，也就是说插入每一条的记录是可以前后顺序颠倒的，不影响查询的结果即可*/
/*实体之间的一对多的关系有两个方向，一个是前边对后边的是一对多，后边的对前边的是一对一*/
/*试图的定义： create view text(视图名称) as select...(后边这个是查询语句)，所以创建视图不用去创建一个表
* 视图是指计算机数据库中的视图，是一个虚拟表，其内容是有查询定义，和真实的表一样，试图包含一系列带有名称的列和行数据
* 但是试图并不在数据库中以存储数据值集形式存在，行和列的数据来自定义视图的查询所引用的表，并且在引用视图时动态生成。
* 视图一旦定义就是不能修改的 如果进行修改必须删除之后再进行创建*/
/*视图可以用来定义新的视图：create view text2 as select...from text*/
/*DATEADD和getdate两个数据库函数都是sql server中的函数，mysql中的函数只有DATEADD，而且
* 参数是两个，不是三个*/
/*DATEADD函数是在日期中添加或者减去指定的时间间隔*/
/*sql server数据库中的函数：DATEADD(datepart,number,date) datapart(参数可以是年月日)
number(是希望添加的间隔数（往后就是正数，往前就是负数）)  date(参数是合法的日期表达式（具体的日期值）)
 getdate()函数是获取sql server的当前的日期*/
/*数据定义语言（DDL）用来定义对象的，定义表，索引，视图，数据库操作语言（DML），主要是负责数据的增删改查
* 数据控制语言（DCL）用来授权或者回收访问数据库的某种特权，并且控制数据库的事务发生的时间及效果，如：
* 1.GRANT：授权  2.ROLLBACK：事务的回滚   3.COMMIT：提交*/
/*数据库管理系统是在擦欧总系统支持下的系统软件，数据库系统属于系统软件的范畴*/
/*修改表结构的关键字都是：alter table，再跟具体的修改的语句  （增删改表的字段都是这个）*/
/*修改表字段（add，drop，change，modify（字段类型））
* 修改表字段的名字是change（后面是旧名，新名，字段类型），修改表的字段的类型是modify（后面是字段名称，字段类型）*/
/*between and 包含的数字是闭区间*/
/*mysql中的函数：interval，它可以作为一个函数，也可以作为一个关键字
* interval作为一个函数：interval（4，0，1，2，3，4，5，6），意思就是第一个数作为被比较的数，和后边的数进行比较，返回的是
* 小于等于4的个数，（注意：只有后面的数是从小到达排列的时候才能正常使用）
* interval作为一个关键字：表示一个时间间隔，用于时间的加减法，如查询当前时间前两个小时的日期：
* select now()-interval 2hours;*/
/*where，group by，having这些关键字的区别：where是条件语句过滤查询，如果where和group by分组一起
* 使用，此时where是分组前的过滤，如果和having一起使用，此时是分组后的过滤条件*/
/*所以having必须在group by之后进行过滤，如果没有进行分组，就不能使用having*/
/*having用来从分组后的结果筛选行，不是筛选列（字段）*/

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

//编程题
public class Main13 {
    public static void main1(String[] args) {
        //参数解析(有空格的不能解析成多个字符串)
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        int count = 0;//用于计数引号之外的空格
        for (int i = 0; i < str.length(); i++) {
            //遇到双引号的时候要一直遍历,直到遇到第二个双引号
            //才说明双引号中的参数遍历完了
            if (str.charAt(i) == '"') {
                do {
                    i++;
                }while (str.charAt(i) != '"');
            }
            //双引号之外的空格，count++
            if (str.charAt(i) == ' ') {
                count++;
            }
        }
        //参数的总个数就是count+1
        System.out.println(count+1);
        int flag = 1;
        for (int j = 0; j < str.length(); j++) {
            //碰到第一个引号时flag变为0，碰到第二个引号的时候flag变为1
            if (str.charAt(j) == '"') {
                flag ^= 1;
            }
            //除了双引号中的空格和双引号，其他字符都是要进行输出的
            if (str.charAt(j) != ' ' && str.charAt(j) != '"') {
                System.out.print(str.charAt(j));
            }
            //双引号中的空格也是要输出的
            if (str.charAt(j) == ' ' && flag == 0) {
                System.out.print(str.charAt(j));
            }
            //碰到双引号以外的空格，要进行换行
            if (str.charAt(j) == ' ' && flag == 1) {
                System.out.println();
            }
        }
    }
    //跳石板
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {
            int n = scan.nextInt();//最少跳几步
            int m = scan.nextInt();//要跳到第几块石板

            int[] step = new int[m+1];
            for (int i = 0; i < step.length; i++) {
                step[i] = Integer.MAX_VALUE;
            }
            step[n] = 0;
            for (int i = n; i < m; i++) {
                if (step[i] == Integer.MAX_VALUE) {
                    continue;
                }
            }
        }
    }
    public static List<Integer> div(int num){
        List<Integer> list = new ArrayList<>();
        for (int i = 2; i*i < num; i++) {
            if (num % i == 0) {
                list.add(i);
                if (num / i == i) {
                    list.add(num/i);
                }
            }
        }
        return list;
    }
}
